home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / print / oki.zip / OKI.ASM < prev    next >
Assembly Source File  |  1984-07-11  |  4KB  |  164 lines

  1.     Page    80,132
  2.     Title    Set Oki    Printer    Modes
  3.  
  4. ; This program sends control characters    to an OkiData Microline    92
  5. ; printer connected as LPT1.
  6. ;
  7. ; The user is presented    with a menu of 20 items. Any number of
  8. ; control functions may    be performed.
  9. ;
  10. ; DOS 2.00 with    ANSI.SYS is required.
  11.  
  12. Cseg    Segment    Para Public 'CODE'
  13.     Org    100h
  14.  
  15. Set_Oki    Proc    Far
  16.     Assume    CS:Cseg,DS:Cseg,ES:Cseg
  17.  
  18. Set:    Push    DS
  19.     Xor    AX,AX            ;Set return code
  20.     Push    AX
  21.  
  22. Start:    Mov    DX,Offset Titles    ;Start-up message
  23.     Mov    AH,9
  24.     Int    21h
  25.  
  26. Prompt:    Mov    AH,8            ;Get char in AL, no echo
  27.     Int    21h            ; call DOS to do it
  28.     Cmp    AL,0            ;Extended code?
  29.     Jne    ChkEsc
  30.     Jmp    Short Ext              ;Yes, invalid
  31. ChkEsc:    Cmp    AL,27            ; or ESCape?
  32.     Jne    ChkLtr
  33.     Jmp    Short Done              ;Yes, close up
  34.  
  35. ChkLtr:    Mov    What,AL
  36.     Cmp    AL,65            ;Is it a letter?
  37.     Jl    Number            ; no, assume number
  38.     And    AL,0DFh            ;Make upper case
  39.     Mov    What,AL
  40.     Sub    AL,'A'            ;Get offset
  41.     Add    AL,10
  42.     Jmp    Short Letter
  43.  
  44. Number:    Cmp    AL,'9'            ;Valid number?
  45.     Ja    Error            ; nope
  46.     Sub    AL,'0'            ;To binary value
  47.     Js    Error            ;if less than zero
  48. Letter:    Mov    SI,AX            ;Save binary code
  49.     Cmp    AL,17            ;Exceeded menu list?
  50.     Ja    Error            ;Yes, oops
  51.     Add    AL,AL            ;Times 2 for indexing
  52.     Mov    BL,AL            ;Copy offset
  53.     Sub    BH,BH            ;Clear hi-byte
  54.     Mov    CX,Word    Ptr Cmds[BX]
  55.  
  56.     Mov    AX,SI            ;Get code back
  57.     Mul    Text_Size
  58.     Mov    DI,AX            ; as index to attribute
  59.     Mov    Text+2[DI],'1'        ; and hi-lite chosen text
  60.     Mov    Text+Text_Ln-1[DI],'$'    ; add print stopper
  61.     Mov    DX,Offset InCase
  62.     Mov    AH,9            ;In case printer is off
  63.     Int    21h
  64.  
  65. Send:    Mov    DL,CL
  66.     Mov    AH,5            ;Print first hex code
  67.     Int    21H
  68.  
  69.     Mov    DL,CH
  70.     Mov    AH,5            ; and second code
  71.     Int    21H
  72.  
  73.     Mov    CX,Offset Answer
  74. HiLite:    Mov    DX,Offset Word Ptr Text
  75.     Add    DX,DI            ;Hi-lite selected option
  76.     Mov    AH,9
  77.     Int    21h
  78.  
  79.     Mov    DX,CX            ;Appropriate message
  80.     Mov    AH,9            ;Confirm selection
  81.     Int    21H
  82.     Mov    DX,Offset Cursor
  83.     Mov    AH,9            ;Reset cursor
  84.     Int    21h
  85.     Jmp    Short Prompt              ;Get another selection
  86.  
  87. Done:    Mov    AH,9
  88.     Mov    DX,Offset End_Msg    ;All Set
  89.     Int    21h
  90.     Ret                ;Return    to DOS
  91.  
  92. Ext:    Mov    AH,8            ;Get extended char
  93.     Int    21h
  94. Error:    Mov    AH,9
  95.     Mov    DX,Offset Err_Msg    ;Invalid entry
  96.     Int    21h
  97.     Jmp    Prompt
  98.  
  99. Set_Oki    Endp
  100.     Page
  101. ;
  102. ;        C O N S    T A N T    S
  103.  
  104. Titles    Db    27,'[2J',27,'[=2h',27,'[4m',27,'[1;5H'
  105. Version    Db    ' Set Okidata Printer - Ver 1.1'
  106.     Db    ' (c) 1984 Vernon D. Buerg '
  107.  
  108. ;    Each entry must    be the same size and in    number sequence
  109.  
  110. Text    Db    27,'[0m',27,'[3;5H0 = Six (6) lpi       ';2754
  111. Text_ln    Equ    $ - Text
  112.     Db    27,'[0m',27,'[4;5H1 = Pica 10 cpi       ';3000
  113.     Db    27,'[0m',27,'[5;5H2 = Elite 12 cpi      ';2800
  114.     Db    27,'[0m',27,'[6;5H3 = Condensed 17 cpi  ';2900
  115.     Db    27,'[0m',27,'[7;5H4 = Data quality      ';2748
  116.     Db    27,'[0m',27,'[8;5H5 = Emphasized Print  ';2784
  117.     Db    27,'[0m',27,'[9;5H6 = Enhanced print    ';2772
  118.     Db    27,'[0m',27,'[10;5H7 = Underlined       ';2767
  119.     Db    27,'[0m',27,'[11;5H8 = Form feed        ';1200
  120.     Db    27,'[0m',27,'[3;41H9 = Eight (8) lpi    ';2756
  121.     Db    27,'[0m',27,'[4;41HA = Double Pica 5    ';3031
  122.     Db    27,'[0m',27,'[5;41HB = Double Elite 6   ';2831
  123.     Db    27,'[0m',27,'[6;41HC = Double Condensed ';2931
  124.     Db    27,'[0m',27,'[7;41HD = Correspondence   ';2749
  125.     Db    27,'[0m',27,'[8;41HE = Stop Emphasized  ';2773
  126.     Db    27,'[0m',27,'[9;41HF = Stop Enhanced    ';2773
  127.     Db    27,'[0m',27,'[10;41HG = Stop Underlined ';2768
  128.     Db    27,'[0m',27,'[11;41HH = Line feed       ';1310
  129.  
  130.     Db    27,'[16;18H(ESCape to quit)'
  131.     Db    27,'[0m',27,'[14;18HEnter selection => ',27,'[K$'
  132.  
  133. Answer    Db    27,'[0m',27,'[15;18H'
  134. What    Db    0,' has been set$'
  135.  
  136. Err_Msg    Db    07,27,'[1m',27,'[15;18HInvalid entry',27,'[K'
  137. Cursor    Db    27,'[0m',27,'[14;37H',27,'[K $'
  138. InCase    Db    27,'[0m',27,'[20;1H',27,'[K$'
  139.  
  140. End_Msg    Db    27,'[19;20H',27,'[1m ALL SET',27,'[0m$'
  141.  
  142. Text_Size Db    Text_Ln
  143.  
  144. Cmds    Db    27,54 ;0 6lpi    Two byte DECIMAL codes
  145.     Db    30,00 ;1 pica    Refer to User's Manual
  146.     Db    28,00 ;2 elite
  147.     Db    29,00 ;3 condensed
  148.     Db    27,48 ;4 data quality
  149.     Db    27,84 ;5 emphasized
  150.     Db    27,72 ;6 enhanced
  151.     Db    27,67 ;7 underlined
  152.     Db    12,00 ;8 form feed
  153.     Db    27,56 ;9 8 lpi
  154.     Db    30,31 ;A dbl-pica
  155.     Db    28,31 ;B dbl-elite
  156.     Db    29,31 ;C dbl-condensed
  157.     Db    27,49 ;D corres. quality
  158.     Db    27,73 ;E stop emphasized
  159.     Db    27,73 ;F stop enhanced
  160.     Db    27,68 ;G stop underlined
  161.     Db    13,10 ;H line feed
  162. Cseg    Ends
  163.     End    Set
  164.